/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Clases;

import Persistencia.Convenio;
import Persistencia.DetalleFuncionesDesempenar;
import Persistencia.DetalleObjetivosEmpresa;
import Persistencia.DetalleObjetivosPersonales;
import Persistencia.Entidad;
import Persistencia.Estudiante;
import Persistencia.ObjetivoInicial;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import negocio.EstudianteInterface;
import negocio.ObjetivoInicialInterface;
import org.primefaces.component.datatable.DataTable;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FObjetivoInicial implements Formato {

    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private Estudiante estudiante;
    private ObjetivoInicial objetivosIniciales;
    private List<DetalleObjetivosPersonales> listaDetalleObjetivosPersonales;
    private DetalleObjetivosPersonales detalleObjetivosPersonales;
    private List<DetalleFuncionesDesempenar> listaDetallesFuncionesDesempenar;
    private DetalleFuncionesDesempenar detalleFuncionSeleccionado;
    private List<DetalleObjetivosEmpresa> listaDetalleObjetivosEmpresa;
    private DetalleObjetivosEmpresa detalleObjetivosEmpresa;
    private String funcionDesempenar;
    private String objetivosPersonales;
    private String objetivosEmpresa;
    private DataTable htmlDataTableFunciones;
    private DataTable htmlDataTableObjetivosPer;
    private DataTable htmlDataTableObjetivosEmp;
    private int index;
    @EJB
    private ObjetivoInicialInterface objetivoInicialInterface;
    private EstudianteInterface estudianteInterface;

    @PostConstruct
    public void InicializarVariables() {
        
        try {
            InitialContext ctx = new InitialContext();
            estudianteInterface = (EstudianteInterface) ctx.lookup("EstudianteEJB");
            
        } catch (NamingException ex) {
            Logger.getLogger(FResumenSemPracticaProf.class.getName()).log(Level.SEVERE, null, ex);
        }
        detalleFuncionSeleccionado = new DetalleFuncionesDesempenar();
        listaDetallesFuncionesDesempenar = new ArrayList<DetalleFuncionesDesempenar>();
        listaDetalleObjetivosPersonales = new ArrayList<DetalleObjetivosPersonales>();
        listaDetalleObjetivosEmpresa = new ArrayList<DetalleObjetivosEmpresa>();
        estudiante = new Estudiante();
        estudiante = sessionBean.getUsuarioSession().getEstudiante();
        objetivosIniciales = new ObjetivoInicial();
        detalleObjetivosPersonales = new DetalleObjetivosPersonales();
        detalleObjetivosEmpresa = new DetalleObjetivosEmpresa();
    }

    public void ejecutarDiligenciar() {
        DiligenciarFormato();
    }

    @Override
    public void ConsultarFormato() {

        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        
    }

    @Override
    public void DiligenciarFormato() {
        System.out.println("prueba de enmtrada a diligenciar formato");
        List<Convenio> convenioLista = new ArrayList<Convenio>();
        htmlDataTableFunciones = new DataTable();
        Convenio convenio = new Convenio(1);
        convenio.setIdEntidad(new Entidad(10));
        convenioLista.add(convenio);
        estudiante.setConvenioList(convenioLista);
        objetivosIniciales.setIdEstudiante(estudiante);
        objetivosIniciales.setIdSupervisorEntidad(new Persistencia.SupervisorEntidad(8073658));
        objetivoInicialInterface.crear(objetivosIniciales);
        
    }

    @Override
    public void AprobarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void EditarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }

    public ObjetivoInicial getObjetivosIniciales() {
        return objetivosIniciales;
    }

    public void setObjetivosIniciales(ObjetivoInicial objetivosIniciales) {
        this.objetivosIniciales = objetivosIniciales;
    }

    public List<DetalleFuncionesDesempenar> getListaDetallesFuncionesDesempenar() {
        return listaDetallesFuncionesDesempenar;
    }

    public void setListaDetallesFuncionesDesempenar(List<DetalleFuncionesDesempenar> listaDetallesFuncionesDesempenar) {
        this.listaDetallesFuncionesDesempenar = listaDetallesFuncionesDesempenar;
    }

    public String getFuncionDesempenar() {
        return funcionDesempenar;
    }

    public void setFuncionDesempenar(String funcionDesempenar) {
        this.funcionDesempenar = funcionDesempenar;
    }

    public DataTable getHtmlDataTableFunciones() {
        return htmlDataTableFunciones;
    }

    public void setHtmlDataTableFunciones(DataTable htmlDataTableFunciones) {
        this.htmlDataTableFunciones = htmlDataTableFunciones;
    }

    /**
     * Adiciona cada una de las funciones ingresadas en el detalles a la lista
     * de detalles que alimenta el dataTable de funciones
     *
     * @param actionEvent
     */
    public void cargarFunciones(ActionEvent actionEvent) {
        DetalleFuncionesDesempenar detallefuncionesdesempenar = new DetalleFuncionesDesempenar(listaDetallesFuncionesDesempenar.size() + 1, funcionDesempenar);
        listaDetallesFuncionesDesempenar.add(detallefuncionesdesempenar);
        funcionDesempenar = "";
    }

    public void cargarObjetivosPersonales(ActionEvent actionEvent) {
        DetalleObjetivosPersonales detalleobjetivospersonales = new DetalleObjetivosPersonales(listaDetalleObjetivosPersonales.size()+1, objetivosPersonales);
        listaDetalleObjetivosPersonales.add(detalleobjetivospersonales);
        objetivosPersonales="";    
    }
    
    public void cargarObjetivosEmpresa(ActionEvent actionEvent) {
        DetalleObjetivosEmpresa detalleobjetivosempresa = new DetalleObjetivosEmpresa(listaDetalleObjetivosEmpresa.size()+1, objetivosEmpresa);    
        listaDetalleObjetivosEmpresa.add(detalleobjetivosempresa);
        objetivosEmpresa="";
    }
    /**
     * Remueve de la lista de detalles el detalle seleccionado por el usuario.
     *
     * @param actionEvent
     */
    public void quitarFunciones(ActionEvent actionEvent) {
        for (int i = 0; i < listaDetallesFuncionesDesempenar.size(); i++) {
            if (index == listaDetallesFuncionesDesempenar.get(i).getIdDetalleFuncionesDesempenar()) {
                listaDetallesFuncionesDesempenar.remove(i);
                index = 0;
            }
        }
    }

    public void quitarObjetivosPersonlaes(ActionEvent actionEvent) {
        for (int i = 0; i < listaDetalleObjetivosPersonales.size(); i++) {
            if (index == listaDetalleObjetivosPersonales.get(i).getIdDetalleObjetivosPersonales()) {
                listaDetalleObjetivosPersonales.remove(i);
                index = 0;
            }
        }
    }
    
    public void quitarObjetivosEmpresa(ActionEvent actionEvent) {
        for (int i = 0; i < listaDetalleObjetivosEmpresa.size(); i++) {
            if (index == listaDetalleObjetivosEmpresa.get(i).getIdDetalleObjetivosEmpresa()) {
                listaDetalleObjetivosEmpresa.remove(i);
                index = 0;
            }
        }
    }
    /**
     * Carga en la variable index el parámetro cargado en el f:param del botón
     * "eliminar detalle" del dataTable.
     *
     * @param actionEvent
     */
    public void cargarIndice(ActionEvent actionEvent) {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        index = Integer.parseInt(request.getParameter("param"));
    }
    
    public void cargarIndiceObjetivosPersonales(ActionEvent actionEvent) {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        index = Integer.parseInt(request.getParameter("paramPer"));
    }
    
    public void cargarIndiceObjetivosEmpresa(ActionEvent actionEvent) {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        index = Integer.parseInt(request.getParameter("paramEmp"));
    }

    public DetalleFuncionesDesempenar getDetalleFuncionSeleccionado() {
        return detalleFuncionSeleccionado;
    }

    public void setDetalleFuncionSeleccionado(DetalleFuncionesDesempenar detalleFuncionSeleccionado) {
        this.detalleFuncionSeleccionado = detalleFuncionSeleccionado;
    }

    public DetalleObjetivosPersonales getDetalleObjetivosPersonales() {
        return detalleObjetivosPersonales;
    }

    public void setDetalleObjetivosPersonales(DetalleObjetivosPersonales detalleObjetivosPersonales) {
        this.detalleObjetivosPersonales = detalleObjetivosPersonales;
    }

    public List<DetalleObjetivosPersonales> getListaDetalleObjetivosPersonales() {
        return listaDetalleObjetivosPersonales;
    }

    public void setListaDetalleObjetivosPersonales(List<DetalleObjetivosPersonales> listaDetalleObjetivosPersonales) {
        this.listaDetalleObjetivosPersonales = listaDetalleObjetivosPersonales;
    }

    public DataTable getHtmlDataTableObjetivosPer() {
        return htmlDataTableObjetivosPer;
    }

    public void setHtmlDataTableObjetivosPer(DataTable htmlDataTableObjetivosPer) {
        this.htmlDataTableObjetivosPer = htmlDataTableObjetivosPer;
    }

    public String getObjetivosPersonales() {
        return objetivosPersonales;
    }

    public void setObjetivosPersonales(String objetivosPersonales) {
        this.objetivosPersonales = objetivosPersonales;
    }

    public List<DetalleObjetivosEmpresa> getListaDetalleObjetivosEmpresa() {
        return listaDetalleObjetivosEmpresa;
    }

    public void setListaDetalleObjetivosEmpresa(List<DetalleObjetivosEmpresa> listaDetalleObjetivosEmpresa) {
        this.listaDetalleObjetivosEmpresa = listaDetalleObjetivosEmpresa;
    }

    public DetalleObjetivosEmpresa getDetalleObjetivosEmpresa() {
        return detalleObjetivosEmpresa;
    }

    public void setDetalleObjetivosEmpresa(DetalleObjetivosEmpresa detalleObjetivosEmpresa) {
        this.detalleObjetivosEmpresa = detalleObjetivosEmpresa;
    }

    public DataTable getHtmlDataTableObjetivosEmp() {
        return htmlDataTableObjetivosEmp;
    }

    public void setHtmlDataTableObjetivosEmp(DataTable htmlDataTableObjetivosEmp) {
        this.htmlDataTableObjetivosEmp = htmlDataTableObjetivosEmp;
    }

    public String getObjetivosEmpresa() {
        return objetivosEmpresa;
    }

    public void setObjetivosEmpresa(String objetivosEmpresa) {
        this.objetivosEmpresa = objetivosEmpresa;
    }
    
    
    
}